﻿using System;
using System.Globalization;
using System.Windows.Data;
using System.Windows.Media;
using Iot.Shared.Enums;

namespace Iot.RealTimeData.WPF.Prism.ValueConverter;

/// <summary>
///     一个值转换器，用于根据Switching枚举值返回不同的画笔颜色
/// </summary>
public class SwitchingToBrushConverter : IValueConverter
{
    /// <summary>
    ///     将Switching枚举值转换为对应的Brush对象
    /// </summary>
    /// <param name="value">要转换的值，类型为Switching枚举</param>
    /// <param name="targetType">目标类型</param>
    /// <param name="parameter">转换器参数（未使用）</param>
    /// <param name="culture">区域性信息</param>
    /// <returns>
    ///     根据Switching值返回不同的Brush对象：
    ///     - Normal: 绿色画笔
    ///     - Alarm: 红色画笔
    ///     - null: 灰色画笔
    ///     - 其他情况: 白色画笔
    /// </returns>
    public object Convert(object? value, Type targetType, object? parameter, CultureInfo culture)
    {
        return value switch
        {
            Switching.Normal => Brushes.Green, // 正常状态使用绿色画笔
            Switching.Alarm => Brushes.Red, // 报警状态使用红色画笔
            null => Brushes.Gray, // 空值使用灰色画笔
            _ => Brushes.White // 其他情况使用白色画笔
        };
    }

    /// <summary>
    ///     将Brush值转换回Switching枚举值（未实现）
    /// </summary>
    /// <param name="value">要转换回的值</param>
    /// <param name="targetType">目标类型</param>
    /// <param name="parameter">转换器参数</param>
    /// <param name="culture">区域性信息</param>
    /// <returns>抛出NotImplementedException异常，表示此方法未实现</returns>
    /// <exception cref="NotImplementedException">始终抛出此异常</exception>
    public object ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}